package com.tedu.day02.test;

/**
 * 普通类  抽象类   接口类
 *                      【关系】  【特点】
 *     类与类             继承      只能单继承，可多层继承
 *     类与抽象类          继承      可以单继承 ，不可以多继承
 *     抽象类与抽象类       继承      只能单继承，可多层继承
 *     类与接口            实现      可以单继承，也可以多实现
 *                                 并且继承同时实现多个接口
 *     接口与接口           继承     可以单继承，可以多继承
 */
/*作业1：抽象类与接口区别和关系？简答*/
/*1. 公共函数实现方式不同。接口中的函数必须被实现，而抽象类中的函数可以被实现也可以不被实现。
        2. 继承方式不同。一个类只能继承一个抽象类，但可以实现多个接口。
        3. 成员变量的访问权限不同。抽象类中的成员变量可以是变量或常量，可以有构造方法，但不能实例化，需要通过多态子类来进行它的子类需重写抽象方法，否则也必须为抽象类。接口中的成员变量只能是常量，默认由'public static final'来进行修饰，没有构造方法。
        4. 实现方式不同。接口的实现需要用到implements关键字，而抽象类的实现需要用到extends关键字。
        接口和抽象类之间也存在一定的联系：
        1. 抽象类可以被看作是接口的一种特殊实现，它可以包含接口中定义的抽象方法的实现。
        2. 接口可以被看作是抽象类的一种特殊实现，它可以包含抽象类中定义的抽象方法的实现。
        3. 接口和抽象类都可以被其他类继承，从而实现代码的复用。总的来说，接口和抽象类都是对一类模型的抽象，它们之间存在一定的联系和区别。在实际开发中，我们需要根据具体的需求选择合适的抽象方式，以提高代码的可读性和可维护性。*/

//5.接口与接口           继承     可以单继承，可以多继承
//interface Loo{}      interface Foo{}
//interface Voo extends Loo,Foo{}

//4.类与接口            实现      可以单继承，也可以多实现
//interface Loo{}      interface Foo{}
//class Joo{}
//class Voo extends Joo implements Loo,Foo{}

//3.抽象类与抽象类：继承--只能单继承，可多层继承
//abstract class Loo{}
//abstract class Voo extends Loo{}
//abstract class Uoo extends Voo{}


//2.类与抽象类   可以单继承 ，不可以多继承
//abstract class Uoo{} abstract class Voo{}
//class Loo extends Uoo.Voo{}




//1.类与类继承---单继承，可多层继承
// class Loo{}
//class Voo extends Loo{}
public class 关系 {
}
